package com.jiuzhou.crawlers.taobao.processor.taobao;

import java.io.IOException;
import java.net.URI;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.management.JMException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

import com.jiuzhou.crawlers.taobao.processor.taobao.constant.CommonConstant;
import com.jiuzhou.crawlers.taobao.util.DataGetUtil;
import com.jiuzhou.crawlers.taobao.util.HdfsUtil;

import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.processor.PageProcessor;

/**
	 * 项目名称：大数据爬虫
	 * @author yanganzhen
	 * version-code：1.0
     * 类说明：根据商品id爬取详细信息（商品参数，评论等）
     * 创建时间：2016年12月7日
	 */
public class ItemDetailTaoBaoProcessor implements PageProcessor {
	
	public static Map<String,List<Integer>> brandLineCount =  new HashMap<String,List<Integer>>(); // Map<文件名, List<每行商品数目>> 
	
	public  List<List<Path>> allPaths ;
	
	public static boolean isCurrentType = false;
	
	public   static int  line= 0 ; 
	
	public    static int  flag = 0 ; 
	
	 private Site site =  Site.me().setRetryTimes(3).setSleepTime(1000);  //站点设置
	@Override
	public Site getSite() {
		// TODO Auto-generated method stub
		return site;
	}

	/**方法名称：process()
	 * 方法说明：商品detail爬取Processor
	 */
	@Override
	public synchronized void process(Page page){
				
		        //爬取链接内容
	            if(page.getUrl().regex("https://detail.tmall.com").match()){
	            	int begain = page.getUrl().toString().indexOf("=")+1;
	            	int end = page.getUrl().toString().indexOf("#");
	                page.putField("itemId", page.getUrl().toString().substring(begain,end));
	            	page.putField("detailParameter", page.getHtml().css("div.attributes"));
	            }
	            //开始爬取之前预处理
	            else{
	            	page.setSkip(true);
	        		//提取url
	        		List<String[]> itemUrl = new ArrayList<String[]>();
	        		List<String> urlList=new ArrayList<String>();
	        		 int endNum = 0 ;
	        		allPaths= HdfsUtil.getAllFileByRootPath("hdfs://master:9000/user/yanganzhen/");//获取所有文件的文件名
	        		//遍历所有文件
	        		for(List<Path> ps : allPaths){
	        			 for(Path p : ps ){
	        					if(endNum<=100000){	
	        				 //判断是否从当前关键词开始爬取
	        				 if(CommonConstant.CURRENTTYPE.equals("")){
	        					 isCurrentType=true;
	        				 }else{
	        				   if(p.getName().contains(CommonConstant.CURRENTTYPE)){
	        					   isCurrentType=true;
	        				   }else{
	        					   if(!isCurrentType)
	        					   break;
	        				   }
	        				 }
	        				 //获取所有爬取路径
	        				 try {
	        					itemUrl = DataGetUtil.getDataByParam(p,"itemId");// List<文件每行的链接>
	        				} catch (IOException e) {
	        					e.printStackTrace();
	        				}
	        				 List<Integer> lineCount=new ArrayList<Integer>();//List<每行商品数目>
	        				 for(String[] itU : itemUrl){
	        					 int lineLength = itU.length;
	        					 lineCount.add(lineLength);//添加当前行的商品个数
	        					 for(String u : itU){
	        						if(isCurrentType)
	        						 //page.addTargetRequest("https://detail.tmall.com/item.htm?id=541121699363);//添加url
	        							page.addTargetRequest("https://detail.tmall.com/item.htm?id="+u.trim()+"#"+p.getName());
	        								endNum++;
	        					 }
	        				 }
	        				 String fileName = p.getName();
	        				 brandLineCount.put(fileName,lineCount); //文件名 对应行商品个数
	        				 System.out.println("完成url提取 文件的路径为："+p.toString() +"    文件名为："+p.getName()+"读取个数："+endNum);
	        			 }
	        		}
	        		}
	            }
	            
	}



}
